#-*- coding: utf8 -*-

from tutor.script import *
from tutor.plugin.maple import *

# meta information
meta(author       = 'Fábio Mendes',
     creationdate = datetime(2010, 10, 9),
     status       = 'testing',
     difficulty   = 'easy',
     time         = 10,
     itemtype     = 'test')

# seleciona pontos
g, k = oneof((M.cos, 2),
             (M.cos, 4),
             (M.sin, 1))
a = oneof(2,3,4,9)
int_f = g(M.Pi/k * x/(a - y**2))/a
print('g=%s, k=%s, a=%s, int_f=%s' % (g, k, a, int_f))

# calcula resultado da integral
r = M('`..`')
I = M.int(int_f, x==r(0, a - y**2))
I = M.int(I, y==r(0, M.sqrt(a)))
print('Integral:', I)

# domínio retangular: omite o integrando
err_ret = a * M.sqrt(a)

# zera a integral
err_zero = 0

question('Considere a integral \n\n'
         '$$\\int_{0}^{#1} dx \\int_{0}^{#2} dy\\ #3.$$', a, M.sqrt(a-x), int_f,
         'Após \\emph{inverter} a ordem de integração, os limites de integração' 
         'em $y$ se tornam')
multiplechoice()

# limites em y
lim = '$\\int_{#1}^{#2} dx\\,\\int_{(\\dots)}^{(\\dots)}dy\\,(\\dots)$.'

choice(1, lim, 0, M.sqrt(a))
explanation('Escolha correta!') 

choice(0, lim, 0, 1)
explanation('Devemos percorrer todo o domínio de integração em $y$') 

choice(0, lim, 0, M.sqrt(a - x))
explanation('O limite de integração não pode depender de $x$. A não ser em ' 
            'domínios retangulares os limites de integração de integrais ' 
            'iteradas são modificados quando se altera a ordem de integração.') 

# limites em x
lim = '$\\int_{(\\dots)}^{(\\dots)} dx\\,\\int_{#1}^{#2}dy\\,(\\dots)$.'
question('Já os limites de integração em $x$ se tornam')
multiplechoice()

choice(1, lim, 0, a - y**2)
explanation('Escolha correta!') 

choice(0, lim, 0, M.sqrt(a - y))
explanation('É necessário inverter a relação $y=\\sqrt{#1 - x}, não é correto' 
            'simplesmente substituir uma variável pela outra.', a) 

choice(0, lim, 0, a)
explanation('O limite de integração deve depender de $y$. A não ser em' 
            'domínios retangulares os limites de integração de integrais' 
            'iteradas são modificados quando se altera a ordem de integração.') 

# resultado da integral
question('O resultado desta integral é')
multiplechoice()

choice_eq(1, I)
explanation('Escolha correta!') 

choice_eq(0, err_ret)
explanation('Você provavelmente substituiu o domínio de integração por um' 
            'retangular e omitiu o integrando') 

choice_eq(0, 0)
explanation('A integral não se anula!') 

end()